﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
using AcademiaInteligenteData.BLL;
using AcademiaInteligenteData;
using FuncionarioInteligenteData.BLL;
using AcademiaInteligenteData.DML;
using AcademiaInteligenteData.DAL;

namespace WSAcademiaInteligente
{
    /// <summary>
    /// Summary description for WsAcademiaInteligente
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]

    public class WsAcademiaInteligente : System.Web.Services.WebService
    {

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string Login(string login, string senha)
        {
            try
            {
                Cliente cliente = new BoCliente().SelecionarClientePorLoginSenha(login, senha);

                if (cliente != null)
                {
                    return "{'code':'200','id':'" + cliente.Id + "','nome':'" + cliente.Nome + "'}";
                }
                else
                {
                    return "{\"code\":\"500\"}";
                }
            }
            catch
            {
                return "{'code':500}";
            }
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string Modalidades()
        {
            List<Modalidade> modalidades = new BoModalidade().ListarModalidades();
            string result = string.Empty;
            foreach (var item in modalidades)
            {
                result += string.Format("{'id':'" + item.Id + "','descricao':" + item.Descricao + "}");
            }
            if (!string.IsNullOrEmpty(result))
            {
                result = "{'code':'407','modalidades:['" + result + "']}";
            }
            return result;
        }

        #region Modalidades

        [WebMethod]
        public List<Modalidade> ListarModalidades()
        {
            return new BoModalidade().ListarModalidades();
        }

        [WebMethod]
        public void InserirModalidade(Modalidade modalidade)
        {
            new BoModalidade().InserirModalidade(modalidade);
        }

        [WebMethod]
        public void AlterarModalidade(Modalidade modalidade)
        {
            new BoModalidade().AlterarModalidade(modalidade);
        }

        [WebMethod]
        public void InserirModalidadeHorario(Modalidade_Horario modalidade)
        {
            new BoModalidade().InserirModalidadeHorario(modalidade);
        }

        [WebMethod]
        public void AlterarModalidadeHorario(Modalidade_Horario modalidade)
        {
            new BoModalidade().AlterarModalidadeHorario(modalidade);
        }

        [WebMethod]
        public void ExcluirModalidade(int id)
        {
            new BoModalidade().ExcluirModalidade(id);
        }

        [WebMethod]
        public List<Modalidade> SelecionarModalidadePorAcademia(int idAcademia)
        {
            return new BoModalidade().SelecionarModalidadePorAcademia(idAcademia);
        }
        [WebMethod]
        public List<Modalidade_Horario> SelecionarModalidadeHorarioPorModalidade(int idModalidade)
        {
            return new BoModalidade().SelecionarModalidadeHorarioPorModalidade(idModalidade);
        }
        #endregion

        #region Metodos TipoModalidade
        [WebMethod]
        public List<TipoModalidade> SelecionaTipoModalidade()
        {
            return new BoTipoModalidade().SelecionaTipoModalidade();
        }

        [WebMethod]
        public void inserirTipoModalidade(TipoModalidade tipoModalidade)
        {
            new BoTipoModalidade().inserirTipoModalidade(tipoModalidade);
        }

        [WebMethod]
        public void alterarTipoModalidade(TipoModalidade tipoModalidade)
        {
            new BoTipoModalidade().alterarTipoModalidade(tipoModalidade);
        }

        #endregion

        #region Metodos Academia
        [WebMethod]
        public void InserirAcademia(Academia academia)
        {
            new BoAcademia().InserirAcademia(academia);
        }
        [WebMethod]
        public void AlterarAcademia(Academia academia)
        {
            new BoAcademia().AlterarAcademia(academia);
        }
        [WebMethod]
        public Academia SelecionarAcademia(int idAcademia)
        {
            return new BoAcademia().SelecionarAcademia(idAcademia);
        }
        [WebMethod]
        public List<Academia> ListarAcademia()
        {
            return new BoAcademia().ListarAcademia();
        }
        [WebMethod]
        public void ExcluirAcademia(int idAcademia)
        {
            new BoAcademia().ExcluirAcademia(idAcademia);
        }
        [WebMethod]
        public void TesteDeMetodo()
        {
        }
        #endregion

        #region Metodos Funcionarios
        [WebMethod]
        public void InserirFuncionario(Funcionario funcionario)
        {
            new BoFuncionario().InserirFuncionario(funcionario);
        }
        [WebMethod]
        public void AlterarFuncionario(Funcionario funcionario)
        {
            new BoFuncionario().AlterarFuncionario(funcionario);
        }
        [WebMethod]
        public Funcionario SelecionarFuncionario(int idFuncionario)
        {
            return new BoFuncionario().SelecionarFuncionario(idFuncionario);
        }
        [WebMethod]
        public List<Funcionario> SelecionarFuncionariosPorAcademia(int idAcademia)
        {
            return new BoFuncionario().SelecionarFuncionariosPorAcademia(idAcademia);
        }
        [WebMethod]
        public Funcionario SelecionarFuncionarioPorLoginSenha(string login, string senha)
        {
            return new BoFuncionario().SelecionarFuncionarioPorLoginSenha(login, senha);
        }
        [WebMethod]
        public void ExcluirFuncionario(int idFuncionario)
        {
            new BoFuncionario().ExcluirFuncionario(idFuncionario);
        }
        [WebMethod]
        public void RemoverFuncionarioModalidade(int idFuncionario, int idModalidade)
        {
            new BoFuncionario().RemoverFuncionarioModalidade(idFuncionario, idModalidade);
        }
        [WebMethod]
        public void InserirFuncionarioModalidade(int idFuncionario, int idModalidade)
        {
            new BoFuncionario().InserirFuncionarioModalidade(idFuncionario, idModalidade);
        }

        #endregion

        #region Metodos Evento
        [WebMethod]
        public void InserirEvento(Evento evento)
        {
            new BoEvento().InserirEvento(evento);
        }
        [WebMethod]
        public void AlterarEvento(Evento evento)
        {
            new BoEvento().AlterarEvento(evento);
        }
        [WebMethod]
        public Evento SelecionarEvento(int idEvento)
        {
            return new BoEvento().SelecionarEvento(idEvento);
        }
        [WebMethod]
        public List<Evento> SelecionarEventoPorAcademia(int idAcademia)
        {
            return new BoEvento().SelecionarEventosPorAcademia(idAcademia);
        }
        [WebMethod]
        public void ExcluirEvento(int idEvento)
        {
            new BoEvento().ExcluirEvento(idEvento);
        }
        [WebMethod]
        public void InserirEventoAmbiente(int idEvento, int Ambiente)
        {
            new BoEvento().InserirEventoAmbiente(idEvento, Ambiente);
        }
        [WebMethod]
        public void RemoverEventoAmbiente(int idEvento, int Ambiente)
        {
            new BoEvento().RemoverEventoAmbiente(idEvento, Ambiente);
        }
        #endregion

        #region Metodos Ambientes
        [WebMethod]
        public void InserirAmbiente(Ambiente ambiente)
        {
            new BoAmbiente().InserirAmbiente(ambiente);
        }
        [WebMethod]
        public void AlterarAmbiente(Ambiente ambiente)
        {
            new BoAmbiente().AlterarAmbiente(ambiente);
        }
        [WebMethod]
        public Ambiente SelecionarAmbiente(int idAmbiente)
        {
            return new BoAmbiente().SelecionarAmbiente(idAmbiente);
        }
        [WebMethod]
        public List<Ambiente> SelecionarAmbientePorAcademia(int idAcademia, int idEvento = 0)
        {
            return new BoAmbiente().SelecionarAmbientesPorAcademia(idAcademia, idEvento);
        }
        [WebMethod]
        public void ExcluirAmbiente(int idAmbiente)
        {
            new BoAmbiente().ExcluirAmbiente(idAmbiente);
        }

        #endregion

        #region Metodos TipoFuncionario
        [WebMethod]
        public List<Tipo_funcionario> ListarTipoFuncionarios()
        {
            return new BoTipoFuncionario().ListarTipoFuncionarios();
        }
        [WebMethod]
        public Tipo_funcionario SelecionarTipoFuncionario(int id)
        {
            return new BoTipoFuncionario().SelecionarTipoFuncionario(id);
        }
        [WebMethod]
        public void ExcluirTipoFuncionario(int id)
        {
            new BoTipoFuncionario().ExcluirTipoFuncionario(id);
        }
        [WebMethod]
        public void AlterarTipoFuncionario(Tipo_funcionario tipoFuncionario)
        {
            new BoTipoFuncionario().AlterarTipoFuncionario(tipoFuncionario);
        }
        [WebMethod]
        public void InserirTipoFuncionario(Tipo_funcionario tipoFuncionario)
        {
            new BoTipoFuncionario().InserirTipoFuncionario(tipoFuncionario);
        }
        #endregion

        #region Metodos Maquinas
        [WebMethod]
        public void InserirMaquina(Maquina maquina)
        {
            new BoMaquina().InserirMaquina(maquina);
        }
        [WebMethod]
        public void AlterarMaquina(Maquina maquina)
        {
            new BoMaquina().AlterarMaquina(maquina);
        }
        [WebMethod]
        public Maquina SelecionarMaquina(int id)
        {
            return new BoMaquina().SelecionarMaquina(id);
        }
        [WebMethod]
        public List<Maquina> ListarMaquina()
        {
            return new BoMaquina().ListarMaquina();
        }
        [WebMethod]
        public void ExcluirMaquina(int idMaquina)
        {
            new BoMaquina().ExcluirMaquina(idMaquina);
        }
        #endregion

        #region Metodos Cliente

        [WebMethod]
        public void InserirCliente(Cliente cliente)
        {
            new BoCliente().InserirCliente(cliente);
        }

        [WebMethod]
        public void AlterarCliente(Cliente cliente)
        {
            new BoCliente().AlterarCliente(cliente);
        }
        [WebMethod]
        public void ExcluirCliente(int idcliente)
        {
            new BoCliente().ExcluirCliente(idcliente);
        }
        [WebMethod]
        public List<Cliente> SelecionarClientePorAcademia(int idAcademia)
        {
            return new BoCliente().SelecionarClientePorAcademia(idAcademia);
        }
        [WebMethod]
        public void RemoverClienteModalidade(int idCliente, int idModalidade, int idAcademia)
        {
            new BoCliente().RemoverClienteModalidade(idCliente, idModalidade, idAcademia);
        }
        [WebMethod]
        public void InserirClienteModalidade(int idCliente, int idModalidade, int idAcademia, double valor)
        {
            new BoCliente().InserirClienteModalidade(idCliente, idModalidade, idAcademia, valor);
        }
        [WebMethod]
        public Cliente SelecionarCliente(int idCliente)
        {
            return new BoCliente().SelecionarCliente(idCliente);
        }

        [WebMethod]
        public List<Cliente> ListarCliente()
        {
            return new BoCliente().ListarCliente();
        }
        #endregion

        #region Plano Exercicio
        [WebMethod]
        public List<PlanoExercicio> SelecionarPlanoExercicioPorAcademiaCliente(int idAcademia, int idCliente)
        {
            return new BoPlanoExercicio().SelecionarPlanoExercicioPorAcademiaCliente(idAcademia, idCliente);
        }

        [WebMethod]
        public void InserirPlanoExercicio(PlanoExercicio planoExercicio)
        {
            new BoPlanoExercicio().InserirPlanoExercicio(planoExercicio);
        }
        [WebMethod]
        public void AlterarPlanoExercicio(PlanoExercicio planoExercicio)
        {
            new BoPlanoExercicio().AlterarPlanoExercicio(planoExercicio);
        }
        [WebMethod]
        public void ExcluirPlanoExercicioPorID(int id)
        {
            new BoPlanoExercicio().ExcluirPlanoExercicioPorID(id);
        }
        [WebMethod]
        public PlanoExercicio SelecionarPlanoExercicioPorID(int id)
        {
            return new BoPlanoExercicio().SelecionarPlanoExercicioPorID(id);
        }
        #endregion

        #region Metodos Exercicio
        [WebMethod]
        public void InserirExercicio(Exercicio exercicio)
        
            /*  
        {

            BoExercicio boExercicio = new BoExercicio();
            boExercicio.InserirExercicio(exercicio);
        }
        [WebMethod]
        public void AlterarExercicio(Exercicio exercicio)
        {

            BoExercicio boExercicio = new BoExercicio();
            boExercicio.AlterarExercicio(exercicio);
        }
        [WebMethod]
        public void ExcluirExercicio(int id)
        {
            BoExercicio boExercicio = new BoExercicio();
            boExercicio.ExcluirExercicio(id);

        }
        [WebMethod]
        public Exercicio SelecionarExercicio(int id)
        {
            BoExercicio boExercicio = new BoExercicio();
            return boExercicio.SelecionarExercicio(id);
        }
        [WebMethod]
        public List<Exercicio> ListarExercicio()
        {
            BoExercicio boExercicio = new BoExercicio();
            return boExercicio.ListarExercicio();
        }*/

            {
            new BoExercicio().InserirExercicio(exercicio);
            }
        [WebMethod]
        public void AlterarExercicio(Exercicio exercicio)
        {
            new BoExercicio().AlterarExercicio(exercicio);
        }
        [WebMethod]
        public Exercicio SelecionarExercicio(int id)
        {
            BoExercicio boExercicio = new BoExercicio();
            return boExercicio.SelecionarExercicio(id);
            //return new BoExercicio().SelecionarExercicio(idExercicio);
        }
        [WebMethod]
        public List<Exercicio> ListarExercicio()
        {
            BoExercicio boExercicio = new BoExercicio();
            return boExercicio.ListarExercicio();
        }
        [WebMethod]
        public void ExcluirExercicio(int id)
        {
            BoExercicio boExercicio = new BoExercicio();
            boExercicio.ExcluirExercicio(id);

        }
          #endregion

        #region Metodos Dieta
        [WebMethod]
        public void InserirDieta(Dieta dieta)
        {

            BoDieta boDieta = new BoDieta();
            boDieta.InserirDieta(dieta);
        }
        [WebMethod]
        public void AlterarDieta(Dieta dieta)
        {

            BoDieta boDieta = new BoDieta();
            boDieta.AlterarDieta(dieta);
        }
        [WebMethod]
        public void ExcluirDieta(int id)
        {
            BoDieta boDieta = new BoDieta();
            boDieta.ExcluirDieta(id);

        }
        [WebMethod]
        public Dieta SelecionarDieta(int id)
        {
            BoDieta boDieta = new BoDieta();
            return boDieta.SelecionarDieta(id);
        }
        [WebMethod]
        public List<Dieta> ListarDieta()
        {
            BoDieta boDieta = new BoDieta();
            return boDieta.ListarDietas();
        }
        [WebMethod]
        public void InserirAlimentacaoDieta(int idAlimentacao, int idDieta)
        {
            new BoDieta().InserirAlimentacaoDieta(idAlimentacao, idDieta);
        }
        [WebMethod]
        public void RemoverAlimentacaoDieta(int idAlimentacao, int idDieta)
        {
            new BoDieta().RemoverAlimentacaoDieta(idAlimentacao, idDieta);
        }
        #endregion

        #region Metodos Alimentacao
        [WebMethod]
        public void InserirAlimentacao(Alimentacao alimentacao)
        {
            BoAlimentacao boAlimentacao = new BoAlimentacao();
            boAlimentacao.InserirAlimentacao(alimentacao);
        }
        [WebMethod]
        public void AlterarAlimentacao(Alimentacao alimentacao)
        {

            BoAlimentacao boAlimentacao = new BoAlimentacao();
            boAlimentacao.AlterarAlimentacao(alimentacao);
        }
        [WebMethod]
        public void ExcluirAlimentacao(int id)
        {
            BoAlimentacao boAlimentacao = new BoAlimentacao();
            boAlimentacao.ExcluirAlimentacao(id);

        }
        [WebMethod]
        public Alimentacao SelecionarAlimentacao(int id)
        {
            BoAlimentacao boAlimentacao = new BoAlimentacao();
            return boAlimentacao.SelecionarAlimentacao(id);
        }
        [WebMethod]
        public List<Alimentacao> ListarAlimentacao()
        {
            BoAlimentacao boAlimentacao = new BoAlimentacao();
            return boAlimentacao.ListarAlimentacao();
        }
        [WebMethod]
        public List<Alimentacao> SelecionarAlimentacaoPorDieta(int idAlimentacao, int idDieta)
        {
            BoAlimentacao BoAlimentacao = new BoAlimentacao();
            return BoAlimentacao.SelecionarAlimentacaoPorDieta(idAlimentacao, idDieta);
        }
        #endregion
    
    }

        

       

    }
